﻿<cfscript>
/** 
* Senate Frameworks cetEntry Property
* 
* @hint "The CET Entry property object handler." 
*/ 

component 
	displayname="public.service.handler.cetEntryProperty" 
	output=false 
	accessors=true 
	{

	/* PROPERTIES */
	property type="boolean" name="Locked" default="false" hint="是否禁止修改";
	property type="boolean" name="Cash" default="false" hint="是否现金缴费";
	property type="boolean" name="BankInstead" default="false" hint="是否银行代扣";
	property type="boolean" name="BankOnline" default="false" hint="是否网银缴费";

	/**
	* @hint "初始化对象"
	* 
	* @Locked "是否禁止修改"
	* @Cash "是否现金缴费"
	* @BankInstead "是否银行代扣"
	* @BankOnline "是否网银缴费"
	*/
	public public.service.handler.cetEntryProperty function init( boolean Locked=false, boolean Cash=false, boolean BankInstead=false, boolean BankOnline=false ) output=false {

		setLocked( arguments.Locked );
		setCash( arguments.Cash );
		setBankInstead( arguments.BankInstead );
		setBankOnline( arguments.BankOnline );
		
		return this;
	}
	
	/**
	* @hint "将上述属性转换为属性字符串"
	*/
	public string function stringProperty() output=false {
		
		var prop = "";
		
		/* 执行序列化 */
		if (getLocked()) { prop = prop & "1"; } else { prop = prop & "0"; }
		if (getCash()) { prop = prop & "1"; } else { prop = prop & "0"; }
		if (getBankInstead()) { prop = prop & "1"; } else { prop = prop & "0"; }
		if (getBankOnline()) { prop = prop & "1"; } else { prop = prop & "0"; }
		
		return left(prop & "0000000000", 10);
		
	}
	
	/**
	* @hint "将属性字符串转换为对象属性"
	* 
	* @fString "属性字符串"
	*/
	public void function parseProperty( required string fString ) output=false {
		
		var i = 0;
		
		for (i=1; i <= len(arguments.fString); i++) {
			
			switch (i) {
				
				case 1:
					/* 第1位 该轮次是否可用 */
					if (yesNoFormat(mid(arguments.fString, i, 1))) { setLocked(true); } else { setLocked(false); }
					break;
				
				case 2:
					/* 第2位 是否现金缴费 */
					if (yesNoFormat(mid(arguments.fString, i, 1))) { setCash(true); } else { setCash(false); }
					break;

				case 3:
					/* 第3位 是否银行代扣 */
					if (yesNoFormat(mid(arguments.fString, i, 1))) { setBankInstead(true); } else { setBankInstead(false); }
					break;
				
				case 4:
					/* 第4位 是否网银缴费 */
					if (yesNoFormat(mid(arguments.fString, i, 1))) { setBankOnline(true); } else { setBankOnline(false); }
					break;
			
			}
		}
	}

}

</cfscript>
